A distributed system may be a collection of systems that interact with each other. Each system of a distributed system may run or host a process that communicates with other processes of the distributed system. Communication may include sending and receiving messages, for example, asynchronous or synchronous messages.
Logical vector clocks may be used to determine a causal relation between events of two different processes. A causal relation may be that one event caused the other event because the one event was processed prior to the other event and was in a position to directly or indirectly influence the other event. Vector clocks of a distributed system may be described as values each of which may be increased by a process of the distributed system. In an example, a process may increase a value by a fixed value when an event is processed by the process. The values may be communicated with messages that are exchanged between processes. Furthermore, a process may update a value with a greater value or provide accessible values for a comparison with values accessible to a different process. Logical vector clocks may, for example, be used by systems of different companies or by different systems within one company.
Values of logical vector clocks and changes of the values may reveal processing details of a distributed system. Such details may for example reveal a part of the history of a process. This may include an identification of processes contributing to an event and the sequence in which the processes contributed.
In an example scenario, a first event may be a creation of a purchase request by a purchaser. The purchase announcement may be sent to a first vendor and the process of the first vendor may send a reply without an offer. Following this, the purchase request may be sent to a second vendor. The second vendor may be able to see from the values of logical clocks received with the request that the request was first sent to the first vendor.